package com.demo.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class CopyFile {
	public static void main(String[] args) {
		File sourceFile = null;
		File desFile = null;

		String sourceFolder = "D://简历2";
		String copyFolder = "D://copy";

		sourceFile = new File(sourceFolder);

		if (!sourceFile.isDirectory() || !sourceFile.exists()) {
			System.out.println("源文件夹不存在!");
		} else {
			desFile = new File(copyFolder);
			desFile.mkdir();

			copy(sourceFile.listFiles(), desFile);
			System.out.println("文件夹复制成功！");
		}
	}
/**
 * 创建copy方法，该方法接收文件数组和目标文件夹两个参数，如果目标文件夹不存在，则调用mkdir（）方法创建文件夹，然后再循环中将文件数组
 * 中的每个文件对象写到目标文件夹内。
 * @param fl
 * @param file
 */
	public static void copy(File[] fl, File file) {
		if (!file.exists()) { // 如果文件夹不存在
			file.mkdir(); // 建立新的文件夹
		}

		for (int i = 0; i < fl.length; i++) {
			if (fl[i].isFile()) { // 如果是文件类型，则复制文件
				try {
					FileInputStream fis = new FileInputStream(fl[i]);
					FileOutputStream out = new FileOutputStream(new File(
							file.getPath() + File.separator + fl[i].getName()));

					int count = fis.available();
					byte[] data = new byte[count];

					if ((fis.read(data)) != -1) {
						out.write(data);
					}
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}

			if (fl[i].isDirectory()) { // 如果是文件夹类型
				File des = new File(file.getPath() + File.separator
						+ fl[i].getName());
				des.mkdir(); // 在目标文件夹中创建相同的文件夹
				copy(fl[i].listFiles(), des); // 递归调用方法本身
			}

		}

	}
}


